﻿using System;

namespace SBPweb.PROvibe.Shared.Actors
{

    public interface ISessionManager : ISessionManager<object>
    {

        TValue Get<TValue>(string key);

        void Put<TValue>(string key, TValue value);

        void RetrieveFromServer();

        void StoreToServer();

    }

    public interface ISessionManager<TValue> : IOverridableDictionary<string, TValue>
    {

        SessionPersistencyMode PersistencyMode
        {
            get;
            set;
        }

        ClientDescriptor Client
        {
            get;
        }

    }

    public enum SessionPersistencyMode
    {
        Direct,
        OnDemand
    }

}